rem Fast dithered Mandelbrot displayer 
rem  (c) Giles Goddard. 1993

PROC	asmtest:
	global	a%,si%,lx%,ly%,data%(1000)
	global	parms%(4),l%
	global	asm&(56)

	Asm&(1)=&90909090
	Asm&(2)=&90909090
	Asm&(3)=&90909090
	Asm&(4)=&90909090
	Asm&(5)=&550600CE
	Asm&(6)=&D1535756
	Asm&(7)=&D1E8D1E8
	Asm&(8)=&8CE8D1E8
	Asm&(9)=&8EC303CB
	Asm&(10)=&3F8B5BC0
	Asm&(11)=&8B02778B
	Asm&(12)=&578B0447
	Asm&(13)=&06892606
	Asm&(14)=&892600CA
	Asm&(15)=&8B00CC16
	Asm&(16)=&0E8B26D9
	Asm&(17)=&535100CC
	Asm&(18)=&DE8BEF8B
	Asm&(19)=&C606C726
	Asm&(20)=&26000000
	Asm&(21)=&00C806C7
	Asm&(22)=&64B90000
	Asm&(23)=&F7C38B00
	Asm&(24)=&D1E0D1E8
	Asm&(25)=&168926D2
	Asm&(26)=&892600C2
	Asm&(27)=&8B00C406
	Asm&(28)=&D1E8F7C5
	Asm&(29)=&26D2D1E0
	Asm&(30)=&00C4062B
	Asm&(31)=&C2161B26
	Asm&(32)=&16892600
	Asm&(33)=&C58B00C2
	Asm&(34)=&E0D1EBF7
	Asm&(35)=&E0D1D2D1
	Asm&(36)=&D603D2D1
	Asm&(37)=&DA8B2770
	Asm&(38)=&C81E3B26
	Asm&(39)=&261E7400
	Asm&(40)=&00C81E89
	Asm&(41)=&C2168B26
	Asm&(42)=&70D70300
	Asm&(43)=&26EA8B10
	Asm&(44)=&00C62E3B
	Asm&(45)=&89260774
	Asm&(46)=&E200C62E
	Asm&(47)=&0F895BA0
	Asm&(48)=&0002C381
	Asm&(49)=&CA3E0326
	Asm&(50)=&C9FF5900
	Asm&(51)=&75E903E3
	Asm&(52)=&5D5E5FFF
	Asm&(53)=&0000CB07
	Asm&(54)=&00000000
	Asm&(55)=&00000000
	Asm&(56)=&00000000
	
	
	a%=reloco: (addr(asm&()))

	parms%(1)=-32768
	si%=-32768
	parms%(3)=600
	parms%(4)=80

	ly%=0
	while ly%<40
		giprint (num$((100*ly%)/40,3))+"%"
		parms%(2)=si%	

		usr(a%,a%,addr(parms%(1)),addr(data%(1)),0)


		lx%=0 : l%=1
		while l%<80
			if data%(l%)>80
			elseif data%(l%)>60
				gat lx%,ly% : glineby 0,0 
				gat lx%,78-ly% : glineby 0,0 
			elseif data%(l%)>40 
				gat lx%,ly% : glineby 2,2 
				gat lx%,78-ly% : glineby 2,2 
			elseif data%(l%)>20 
				gat lx%,ly% : glineby 2,2 
				gat lx%+1,ly% : glineby 0,0 
				gat lx%,78-ly% : glineby 2,2 
				gat lx%+1,78-ly% : glineby 0,0 
			elseif data%(l%)>=0 
				gat lx%,ly% : gfill 2,2,2
				gat lx%,78-ly% : gfill 2,2,2
			endif
			lx%=lx%+2 : l%=l%+1
		endwh


		si%=si%+1600
		ly%=ly%+2
	endwh


	giprint "Finished."

	get



ENDP

PROC relocO:(a%)
	local l%,len%,d%,n&,s%

	d%=(a%+16) and $fff0

	if (a%+16) and $f

		busy "Please wait..."

		s%=a%+16
		len%=peekw(s%)
  	
		l%=0
		while l%<len%
			n&=peekl (s%+l%)
			pokel d%+l%,n&
			l%=l%+4
		endwh
		
		busy off
	endif
	return d%+2
ENDP


